// src/api/user/index.js
import http from "@/axios/index.js";
import {handleSuccess,handleError} from "@/api/index.js";

export const UserApi = {
    //获取用户列表
    list(p) {
        return http.get('/api/user/list', {params:{...p}})
            .then(res => handleSuccess(res, '获取用户列表'))
            .catch(error => handleError(error, '获取用户列表失败', '服务器连接异常'))
    },


    // 添加获取用户权限信息的方法
    getUserAuthInfo() {
        return http.get('/api/auth/info', {})
            .then(res => handleSuccess(res, '获取用户权限信息'))
            .catch(error => handleError(error, '获取用户权限信息失败', '服务器连接异常'))
    },

    /**
     * 公众用户注册
     * @param {Object} data - 注册数据
     * @returns {Promise} 包含注册结果的Promise
     */
    registerPublic: (data) => http.post('/api/pub/register', data)
        .then(res => {
            return handleSuccess(res, '公众注册')
        })
        .catch(error => {
            handleError(error, '公众注册', '注册失败，请检查手机号格式')
        }),

    /**
     * 公众用户注册 (与组件中调用的方法名一致)
     * @param {Object} data - 注册数据
     * @returns {Promise} 包含注册结果的Promise
     */
    publicRegister: (data) => http.post('/api/pub/register', data)
        .then(res => {
            return handleSuccess(res, '公众注册')
        })
        .catch(error => {
            handleError(error, '公众注册', '注册失败，请检查手机号格式')
        }),

    /**
     * 律师注册
     * @param {FormData} data - 注册数据
     * @returns {Promise} 包含注册结果的Promise
     */
    lawyerRegister: (data) => http.post('/api/lawyer/register', data, {
        headers: {
            'Content-Type': 'multipart/form-data'
        }
    })
        .then(res => {
            return handleSuccess(res, '律师注册')
        })
        .catch(error => {
            handleError(error, '律师注册', '注册失败')
        }),

    /**
     * 管理员创建
     * @param {Object} data - 管理员数据
     * @returns {Promise} 包含创建结果的Promise
     */
    adminCreate: (data) => http.post('/api/admin/create', data)
        .then(res => {
            return handleSuccess(res, '创建管理员')
        })
        .catch(error => {
            handleError(error, '创建管理员', '创建失败')
        }),

    /**
     * 检查手机号是否已存在
     * @param {Object} data - 手机号数据
     * @returns {Promise} 包含检查结果的Promise
     */
    checkPhone: (data) => http.post('/api/phone/check', data)
        .then(res => {
            return handleSuccess(res, '检查手机号')
        })
        .catch(error => {
            handleError(error, '检查手机号', '检查失败')
        }),

    /**
     * 获取注册协议
     * @returns {Promise} 包含协议内容的Promise
     */
    getAgreement: () => http.get('/api/agreement')
        .then(res => {
            return handleSuccess(res, '获取注册协议')
        })
        .catch(error => {
            handleError(error, '获取注册协议', '获取失败')
        }),

    //注册
    /**
     *
     * @param params
     */
    register(data) {
        return http.post('/register', {data:data})
            .then(res => handleSuccess(res, '获取用户列表'))
            .catch(error => handleError(error, '获取用户列表失败', '服务器连接异常'))
    },

    //获取验证码
    getCaptcha(params) {
        return http.get('/captcha', {params:params})
            .then(res => handleSuccess(res, '获取验证码'))
            .catch(error => handleError(error, '获取验证码失败', '服务器连接异常'))
    },




    // 获取用户信息
    getUserInfo() {
        return http.get('/api/user/profile', {})
            .then(res => handleSuccess(res, '获取用户信息'))
            .catch(error => handleError(error, '获取用户信息失败', '服务器连接异常'))
    },


    // 在 UserApi 对象中添加
    updateUserProfile(data) {
        return http.put('/api/user/profile', data)
            .then(res => handleSuccess(res, '更新用户信息'))
            .catch(error => handleError(error, '更新用户信息失败', '服务器连接异常'))
    },



    // 在 UserApi 对象中添加
    updateUserPassword(data) {
        return http.put('/api/user/password', data)
            .then(res => handleSuccess(res, '修改密码'))
            .catch(error => handleError(error, '修改密码失败', '服务器连接异常'))
    },


    /**
     * @param phone
     * @param password
     * @param captcha
     *
     */
    login(data) {
        return http.post('/api/auth/login', data)
            .then(res => handleSuccess(res, '登录'))
            .catch(error => handleError(error, '登录失败', '服务器连接异常'))
    },
    //退出登录
    logout(data) {
        return http.post('/logout', {data: data})
    },
    //更新用户
    updateUser(data) {
        return http.put('/api/user/update', data)
            .then(res => handleSuccess(res, '更新用户'))
            .catch(error => handleError(error, '更新用户失败', '服务器连接异常'))
    },
    //更新部分用户信息
    updateUserPart(data) {
        return http.patch('/user/update', data)
    }
}

export const SmsApi = {
    /**
     * 发送短信验证码
     * @param {Object} data - 短信发送数据
     * @param {String} data.mobile - 手机号
     * @param {String} data.type - 短信类型 (REGISTER, LOGIN, ADMIN_CREATE等)
     * @returns {Promise} 包含发送结果的Promise
     */
    sendVerificationCode: (data) => http.post('/api/sms/send', data)
        .then(res => {
            return handleSuccess(res, '发送验证码')
        })
        .catch(error => {
            handleError(error, '发送验证码', '验证码发送失败，请稍后重试')
        }),

    /**
     * 验证短信验证码
     * @param {Object} data - 验证数据
     * @param {String} data.mobile - 手机号
     * @param {String} data.code - 验证码
     * @returns {Promise} 包含验证结果的Promise
     */
    verifyCode: (data) => http.post('/api/sms/verify', data)
        .then(res => {
            return handleSuccess(res, '验证验证码')
        })
        .catch(error => {
            handleError(error, '验证验证码', '验证码验证失败')
        })
}
